---
title: Dependencies
summary: Internal, external, and transitive package/library dependencies for PdfAPI.
status: draft
owner: Not determined from source
last_reviewed: 2026-09-17
library: PdfAPI
reference_type: embedded
---

# Dependencies

PdfAPI depends on two same-repo project references for its PDF processing surface, a set of SAIF framework NuGet packages for hosting, dependency injection, and data access, and a small number of third-party libraries for JSON, Swagger, and PDF format handling. It has no downstream API dependencies; its only outbound integrations are an Oracle database connection and outbound SMTP email.

## Internal dependencies

| Dependency | Reference Type | Project path | Usage |
| --- | --- | --- | --- |
| [PdfAPI.Core](../../libraries/pdfapi-core/overview.md) | Project Reference | `PdfAPI.Core\PdfAPI.Core.csproj` | Shared request/response contract assembly (`ConvertRequest`, `ExtractPagesRequest`, `MergeRequest`, `PdfResult`, `PdfTrackingInfo`, `PdfOptions`, `PageRange`, `Document`) and `PdfClientService` (iTextSharp-based validation/inspection) |
| [PdfAPI.SyncFusionCore](../../libraries/pdfapi-syncfusioncore/overview.md) | Project Reference | `PdfApi.SyncFusionCore\PdfAPI.SyncFusionCore.csproj` | Syncfusion licensing (`LicenseHelper.LicenseSyncfusion`) and the three format operations on the default processor path (`ConverterFactory.Convert`, `PdfMerger.Merge`, `PdfExtractor.Extract`) plus `PdfHelper` form-field helpers; also transitively references `PdfAPI.Core` |
| `SAIF.Web.API` | NuGet Package | — | Supplies `ApiResponseHandler`, the global message handler wrapping every request/response (envelope shape produced inside the package — not visible in this repository) |
| `SAIF.Web.API.Core` | NuGet Package | — | Supplies `BuildInfo.GetBuildInfo`, used by `GET buildVersion` |
| `SAIF.Framework.Web.Mvc` / `SAIF.Web.Mvc` (`1.0.16263.1-alpha`) | NuGet Package | — | Both resolve MVC extension surface, including `RegisterCommonDependencies`; the package reference is a legacy, pre-release (`alpha`) package id/version coexisting with the current `SAIF.Framework.*` 2.0.22xxx package family — see [Tech debt](tech-debt.md) |
| `SAIF.Framework.Common` | NuGet Package | — | `IEnvironmentService`, `ILogService` contracts; concrete implementations resolved by `RegisterCommonDependencies`, not visible in this repository |
| `SAIF.Framework.Data.NHibernate` | NuGet Package | — | `IUnitOfWorkFactory`, `IUnitOfWork`, `DbConnectionManager`, `EnvironmentConfigKeys`; used exclusively in the composition root (`IocConfig.cs`) and `PdfTrackingService` |
| `SAIF.Data.Model.PDF` | NuGet Package | — | NHibernate entities `PDFTracking`, `PDFStatusCode`, `PDFTrackingCode`, `PDFApplicationErrorCode` and their `ClassMap<T>` mappings; not vendored in this repository — table/column names are unknown** (see [Data model](data-model.md)) |

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| `Autofac` | 3.5.0 (redirected) | Dependency injection container — composition root (`IocConfig.cs`, `Global.asax.cs`) |
| `NHibernate` | 4.0.3.4000 | ORM used by `IUnitOfWork` (`PdfTrackingService`, via `SAIF.Framework.Data.NHibernate`) |
| `Oracle.ManagedDataAccess` | 21.5.0 | Oracle ADO.NET provider; underlies the NHibernate Oracle dialect used by the tracking connection |
| `Newtonsoft.Json` | 8.0.3 (redirected to 8.0.0.0 binding) | JSON request/response serialization for every JSON-formatted endpoint response |
| `Swashbuckle` / `Swashbuckle.Core` | 5.3.2 | Swagger document and UI generation via `SwaggerConfig.cs`, live via `PreApplicationStartMethod` |
| `WebActivatorEx` | 2.0 | Enables the `PreApplicationStartMethod` attribute used to register Swagger (`SwaggerConfig.cs`) |
| `log4net` | 2.0.5 | Logging backend behind `ILogService`; referenced transitively, not called directly in application code* |
| `iTextSharp` | 5.5.11 | PDF inspection/validation client used by the `v1/info/*` byte-array endpoints (`PdfAPI.Core\Services\PdfClientService.cs`) |
| `Syncfusion.*` (multiple packages, e.g. `Syncfusion.Compression.Base`) | 18.3460.0.53 (redirected) | Convert/merge/extract/flatten format operations on the default processor path (`PdfApi.SyncFusionCore`) |
| `RestSharp` | 106.12.0 | HTTP client library referenced by the solution closure; not called directly from `PdfAPI\` application code* |
| `Microsoft.AspNet.WebApi.HelpPage` | 5.2.3 | Scaffolded API help-page area; not an application surface — see [Overview: Non-documented artifacts](overview.md) |

## Transitive dependencies

Dependencies in this section are inherited from framework packages and are not referenced directly by this service, but are required at runtime.

| Dependency | Source framework | Type | Usage |
| --- | --- | --- | --- |
| `SAIF.Data.Model.PDF` | `SAIF.Framework.Data.NHibernate` | Transitive | Supplies the four persistence entities used by `PdfTrackingService`; mappings are entirely external to this repository |

## Produced packages

Two NuGet packages are produced from this repository by dedicated pipelines, each evaluated against the two-condition API-client test: does the `.nuspec` declare a `SAIF.Web.API.Clients` dependency, and does the packaged source call this API over HTTP via `JsonHttpClient`/`ClientInfo`?

| Package | Manifest | Pipeline | Packaged content | API-client test | Disposition |
| --- | --- | --- | --- | --- | --- |
| `PdfAPI.Client` | `Scripts\PdfAPI.Client\PdfAPI.Client.nuspec` | `Pipelines\build-vars-client.yml` (`AppType: nuget`, `IncludeReferencedProjects: true`) | `PdfAPI.Client.dll` + `PdfAPI.Core.dll` and sources | **Passes both conditions** — the manifest declares a `SAIF.Web.API.Clients` dependency, and `PdfAPI.Client\PdfClient.cs` (`PdfClient : IPdfClient`) builds a `JsonHttpClient` against `{url}/v1/` and issues `PostJson<>`/`GetResult<>` calls | Genuine API client for this service |
| `Pdf.Local.Client` | `Scripts\Pdf.Local.Client\Pdf.Local.Client.nuspec` | `Pipelines\build-vars-local-nuget.yml` (`AppType: nuget`) | `PdfAPI.Core.dll` + `PdfAPI.SyncFusionCore.dll` | **Fails** — no `SAIF.Web.API.Clients` dependency and no HTTP usage of any kind | Not an API client — an in-process PDF library distribution for local conversion/merge/extract without calling this service |

The deployed API application itself (`Pipelines\build-vars.yml`, `AppType: api`) is deployed to IIS and is not packaged as a NuGet artifact.

## API dependencies

**None identified.** No call to another SAIF-hosted API (via `JsonHttpClient`, `SAIF.Web.API.Clients`, or an equivalent HTTP client pattern) was found anywhere in `PdfAPI\`. PdfAPI is a leaf service from the perspective of outbound API calls; its only outbound integrations are the Oracle database connection and outbound SMTP email (see below).

## Database connections

| Database | Schema | Access method | Resolved by | Usage |
| --- | --- | --- | --- | --- |
| Oracle | `IMG` | NHibernate `IUnitOfWorkFactory("oracle")` | `DbConnectionManager.GetOracleConnectionString(IEnvironmentService, EnvironmentConfigKeys.OracleDatabase, "IMG")` — composed at run time, no `<connectionStrings>` element present | PDF tracking persistence (`PdfTrackingService`) — see [Configuration: Runtime-resolved database connections](configuration.md#runtime-resolved-database-connections) for full detail |

## Dependency risks and notes
- Assembly binding redirects: `PdfAPI\Web.config` declares roughly 60 `<runtime><assemblyBinding>` version redirects (e.g. `Autofac` 3.5.0, `Newtonsoft.Json` 8.0.0.0, `System.Web.Http` 5.2.3, `Syncfusion.Compression.Base` 18.3460.0.53). These are configuration entries, not a dependency relationship in their own right, and are recorded here rather than in the transitive-dependency table above.
- Legacy pre-release MVC package: `SAIF.Web.Mvc 1.0.16263.1-alpha` coexists with current `SAIF.Framework.Web.Mvc` assembly reference and current `SAIF.Framework.*` 2.0.22xxx packages — see [Tech debt](tech-debt.md).
- Envelope shape opacity: `ApiResponseHandler`'s response envelope is implemented entirely inside `SAIF.Web.API` and is not visible from this repository; any consumer-facing documentation of the exact response wrapper must be resolved from that package.
- External persistence model: `SAIF.Data.Model.PDF` owns all `ClassMap<T>` mappings for the tracking entities; a change to that package's schema is invisible to this repository until a compile/runtime failure occurs.
- Unbounded PDF/format engine surface: `iTextSharp 5.5.11` and multiple `Syncfusion.*` 18.3460.0.53 packages parse untrusted, unauthenticated document uploads (see [Authentication and authorization](authentication-authorization.md)).
- Outbound SMTP integration: `System.Net.Mail.SmtpClient("mail.saif.com")` (hard-coded host) sends an incident email on processing failure when `SendHeatEmailOnFailure` is set ([BR-PDFAPI-015](business-rules.md#br-pdfapi-015-incident-email-on-failure)); this is the only other outbound integration besides the Oracle connection above.

## Related documentation
- [API index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Endpoints](endpoints.md)
- [Authentication and authorization](authentication-authorization.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Data model](data-model.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- PdfAPI\PdfAPI.csproj
- PdfAPI\packages.config
- PdfAPI\Web.config
- PdfAPI\App_Start\IocConfig.cs
- PdfAPI\App_Start\WebApiConfig.cs
- PdfAPI\App_Start\SwaggerConfig.cs
- PdfAPI\Global.asax.cs
- PdfAPI\Services\PdfTrackingService.cs
- PdfAPI\Services\PdfService.cs
- PdfAPI\Controllers\v1\ApiInfoController.cs
- Scripts\PdfAPI.Client\PdfAPI.Client.nuspec
- Scripts\Pdf.Local.Client\Pdf.Local.Client.nuspec
- Pipelines\build-vars-client.yml
- Pipelines\build-vars-local-nuget.yml
- Pipelines\build-vars.yml
- PdfAPI.Client\PdfClient.cs
